[2025-08-04] Encoding&Decoding

πŸ¦₯ λ³Έλ¬Έ

Encoding

μ •μ˜

μ–΄λ–€ 데이터λ₯Ό λ‹€λ₯Έ ν˜•μ‹μœΌλ‘œ λ°”κΎΈλŠ” 것.

λͺ©μ 

주둜 특수 λ¬Έμžλ‚˜ λ°”μ΄λ„ˆλ¦¬ 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „μ†‘ν•˜κ±°λ‚˜ μ €μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

  • μ•ˆμ „ν•œ 이유 : 특수 λ¬Έμžλ“€μ„ 인코딩을 톡해 λͺ…λ Ήμ–΄κ°€ μ•„λ‹Œ λ‹¨μˆœ ν…μŠ€νŠΈλ‘œ μΈμ‹ν•˜κ²Œ ν•œλ‹€.

μ’…λ₯˜

인코딩 방식 μ˜ˆμ‹œ μ‚¬μš© λͺ©μ 
URL 인코딩 < β†’ %3C λΈŒλΌμš°μ €κ°€ URL둜 해석 κ°€λŠ₯ν•œ 문자둜 λ³€ν™˜
HTML μ—”ν‹°ν‹° 인코딩 < β†’ &lt; HTMLμ—μ„œ νƒœκ·Έλ‘œ ν•΄μ„λ˜μ§€ μ•Šκ²Œ
Base64 hello β†’ aGVsbG8= λ°”μ΄λ„ˆλ¦¬ 파일 등을 λ¬Έμžμ—΄λ‘œ λ³€ν™˜
Unicode μ΄μŠ€μΌ€μ΄ν”„ s β†’ \u0073 JS/JSON λ‚΄λΆ€μ—μ„œ μ•ˆμ „ν•˜κ²Œ ν‘œν˜„

Decoding

μ •μ˜

μΈμ½”λ”©λœ 데이터λ₯Ό μ›λž˜λŒ€λ‘œ λ˜λŒλ¦¬λŠ” κ³Όμ •

Encoding&Decoding λ™μž‘ 흐름

  1. μ‚¬μš©μž μž…λ ₯

    μ‚¬μš©μžκ°€ formμ΄λ‚˜ URL을 톡해 값을 μž…λ ₯

  2. λΈŒλΌμš°μ €κ°€ μ„œλ²„μ— μš”μ²­

    URL ꡬ쑰 깨짐을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μžλ™ 인코딩

  3. μ„œλ²„ μˆ˜μ‹ 

    μ„œλ²„ ν”„λ ˆμž„μ›Œν¬κ°€ μžλ™μœΌλ‘œ λ””μ½”λ”©

  4. μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ— 응닡

    이 λ•Œ μžλ™μœΌλ‘œ HTML 인코딩을 ν•˜μ§€ μ•ŠμŒ. escapeλ₯Ό μ‚¬μš©ν•˜μ—¬ HTML 인코딩을 ν•˜κ³  λΈŒλΌμš°μ €κ°€ ν…μŠ€νŠΈλ‘œ μΈμ‹ν•˜κ²Œ ν•΄μ•Ό 함

  5. λΈŒλΌμš°μ € λ Œλ”λ§

    λΈŒλΌμš°μ €μ—μ„œ μžλ™μœΌλ‘œ HTML λ””μ½”λ”©

κΆκΈˆν–ˆλ˜ 점

μ„œλ²„μ—μ„œ 받은 상황 escape μ—¬λΆ€ λΈŒλΌμš°μ € 해석 κ²°κ³Ό
<script>alert(1)</script> ❌ μ—†μŒ script νƒœκ·Έ β†’ μ‹€ν–‰ ❌ XSS
<script>alert(1)</script> βœ… 있음 &lt;script&gt;alert(1)&lt;/script&gt 둜 λ³€κ²½. λ‹¨μˆœ ν…μŠ€νŠΈλ‘œ νŒλ‹¨. βœ… μ•ˆμ „
<scr&#x69;pt>...</scr&#x69;pt> ❌ μ—†μŒ &#x69; β†’ i β†’ <script> ❌ XSS
<scr&amp;#x69;pt> βœ… 있음 &amp; β†’ &, κ·ΈλŒ€λ‘œ λ³΄μž„ βœ… ν…μŠ€νŠΈλ§Œ λ³΄μž„

μ™œ μœ„μ™€ 같은 상황이 λ°œμƒν•˜λŠ” κ±°μ§€?

λΈŒλΌμš°μ €μ—μ„œ λ””μ½”λ”© ν•˜λŠ” 객체가 닀름

&lt 같은 κ²½μš°μ—λŠ” ν…μŠ€νŠΈ λ Œλ”λŸ¬λ₯Ό 톡해 ν…μŠ€νŠΈλ‘œ νŒλ‹¨ν•˜κ²Œ 됨.

&#amp 같은 κ²½μš°μ—λŠ” HTML νŒŒμ„œλ₯Ό 톡해 <script> λ₯Ό μ‹€ν–‰ν•˜κ²Œ 함

Categories:

Updated:

Leave a comment